const eventBus = {
    // 保存类型与回调的容器
    callbacks: {
    },
}

// 绑定事件
eventBus.on = function (type, callback) {
    if (this.callbacks[type]) {
        // 如果已经存在该类型的回调，则直接添加
        this.callbacks[type].push(callback);
    } else {
        this.callbacks[type] = [callback];
    }
}

// 触发事件
eventBus.emit = function (type, data) {
    // 如果该类型的回调存在，则依次执行
    if (this.callbacks[type] && this.callbacks[type].length) {
        this.callbacks[type].forEach(callback => callback(data));
    } else {
        console.log('该事件不存在');
    }
}
4
// 解绑事件
eventBus.off = function (eventName) {
    // 如果该类型的回调存在，则清空
    if (this.callbacks[eventName]) {
        // 只是清空enevtName对应的回调
        delete this.callbacks[eventName];
    } else {
        this.callbacks = {};
    }
}